"""
配置文件 - Docling Web应用
"""
import os
from pathlib import Path

class Config:
    """基础配置类"""
    
    # Flask配置
    SECRET_KEY = os.environ.get('SECRET_KEY') or 'docling-web-app-secret-key-2024'
    
    # 文件上传配置
    MAX_CONTENT_LENGTH = 100 * 1024 * 1024  # 100MB
    UPLOAD_FOLDER = Path(__file__).parent / 'uploads'
    ALLOWED_EXTENSIONS = {
        'pdf', 'docx', 'pptx', 'xlsx', 'html', 'htm', 'md', 'txt',
        'png', 'jpg', 'jpeg', 'tiff', 'bmp', 'gif', 'webp'
    }
    
    # Docling配置
    MODELS_CACHE_DIR = Path(__file__).parent / 'models_cache'
    
    # HuggingFace镜像配置
    HF_ENDPOINT = os.environ.get('HF_ENDPOINT', 'https://hf-mirror.com')
    HF_HOME = str(MODELS_CACHE_DIR)
    
    # 处理选项
    DEFAULT_OUTPUT_FORMATS = ['markdown', 'json', 'html']
    MAX_PAGES = 50  # 最大处理页数限制

    # 处理器配置
    USE_VLM_PROCESSOR = os.environ.get('USE_VLM_PROCESSOR', 'false').lower() == 'true'
    DEFAULT_PROCESSOR = os.environ.get('DEFAULT_PROCESSOR', 'standard')  # 'standard' or 'vlm'

    # 性能配置
    OMP_NUM_THREADS = os.environ.get('OMP_NUM_THREADS', '4')
    
    @classmethod
    def init_app(cls, app):
        """初始化应用配置"""
        # 设置环境变量
        os.environ['HF_ENDPOINT'] = cls.HF_ENDPOINT
        os.environ['HF_HOME'] = cls.HF_HOME
        os.environ['OMP_NUM_THREADS'] = cls.OMP_NUM_THREADS
        
        # 创建必要的目录
        cls.UPLOAD_FOLDER.mkdir(exist_ok=True)
        cls.MODELS_CACHE_DIR.mkdir(exist_ok=True)
        
        # 设置Flask配置
        app.config['MAX_CONTENT_LENGTH'] = cls.MAX_CONTENT_LENGTH
        app.config['UPLOAD_FOLDER'] = str(cls.UPLOAD_FOLDER)


class DevelopmentConfig(Config):
    """开发环境配置"""
    DEBUG = True
    
    
class ProductionConfig(Config):
    """生产环境配置"""
    DEBUG = False
    

# 配置字典
config = {
    'development': DevelopmentConfig,
    'production': ProductionConfig,
    'default': DevelopmentConfig
}
